package com.ming.demo.web.impl;

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.ListObjectsRequest;
import com.aliyun.oss.model.OSSObjectSummary;
import com.aliyun.oss.model.ObjectListing;
import com.ming.demo.bean.Result;
import com.ming.demo.web.OSSController;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;


import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;

@RestController
@RequestMapping("/oss")
public class OssControllerImpl implements OSSController {

    // 首级目录查询
    @Override
    @RequestMapping("/findAllFile")
    public Result<List<String>> findAllFile(){
            // Endpoint以杭州为例，其它Region请按实际情况填写。
            String endpoint = "http://mingmingmelovemingming.oss-cn-beijing.aliyuncs.com";
            // 阿里云主账号AccessKey拥有所有API的访问权限，风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维，请登录 https://ram.console.aliyun.com 创建RAM账号。
            String accessKeyId = "LTAI4FjWDz22LBtN13UqDHne";
            String accessKeySecret = "cUp7p1IM3QtuD8od8U8W1TvmdLtCpg";
            String bucketName = "mingmingmelovemingming";
        String KeyPrefix = "";
        List<String> arrayList = new ArrayList<>();

// 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

// 列举文件。 如果不设置KeyPrefix，则列举存储空间下所有的文件。KeyPrefix，则列举包含指定前缀的文件。
        ObjectListing objectListing = ossClient.listObjects(bucketName, KeyPrefix);
        List<OSSObjectSummary> sums = objectListing.getObjectSummaries();
        for (OSSObjectSummary s : sums) {
            System.out.println("\t" + s.getKey());
            arrayList.add(s.getKey());
        }
        List<String> arrayList1 = new ArrayList<>();
        // 进行分割
        for (String s : arrayList) {
            // 进行拆分
            String tmp = s.split("/")[0];
            arrayList1.add(tmp);
        }

        HashSet set = new HashSet();
        List newList = new  ArrayList();
        for (String cd:arrayList) {
            if(set.add(cd)){
                newList.add(cd);
            }
        }


// 关闭OSSClient。
        ossClient.shutdown();
        Result<List<String>> result = new Result<List<String>>();
        result.setCode("200");
        result.setData(newList);
        return result;
    }

    // 根据首目录查询子目录
    @RequestMapping("/souFindAll")
    @Override
    public Result<List<String>> souFindAll(String name){
        // Endpoint以杭州为例，其它Region请按实际情况填写。
        String endpoint = "http://oss-cn-shanghai.aliyuncs.com";
        // 阿里云主账号AccessKey拥有所有API的访问权限，风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维，请登录 https://ram.console.aliyun.com 创建RAM账号。
        String accessKeyId = "LTAIJWp5hlHt0VGY";
        String accessKeySecret = "XV0cLY8QUCEkmaujp8fw2BK3aMm6ph";
        String bucketName = "weixinxiaocengxu";

// 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

// 指定前缀。
        final String keyPrefix = name;

// 列举包含指定前缀的文件。默认列举100个文件。
        ObjectListing objectListing = ossClient.listObjects(new ListObjectsRequest(bucketName).withPrefix(keyPrefix));
        List<OSSObjectSummary> sums = objectListing.getObjectSummaries();
        List<String> list = new ArrayList<>();
        for (OSSObjectSummary s : sums) {
            list.add(s.getKey());
            System.out.println("\t" + s.getKey());
        }



        // 去掉前面的
        List<String> list1 = new ArrayList<>();
        for (String s : list) {
            // 去掉前面的
            String tmp = s.substring(name.length());
            list1.add(tmp);
        }




        Result result = new Result();
        result.setCode("200");
        result.setData(list1);

// 关闭OSSClient。
        ossClient.shutdown();
        return result;
    }
}
